In modern computing environments, distributed applications may consist of numerous autonomous units executing on different hosts, cooperating via a network, interfacing with clients such as browsers, accessing database servers, etc. Peer-to-peer applications, multi-tier web applications, distributed hash tables, server pools or clusters, are examples of distributed applications. Such distributed applications may execute in clouds, data centers, etc.
Network communication is necessary for effective operation of such applications. In some cases, it might be desirable for an application to have various network performance characteristics, for example, bandwidth between components, average throughput to the Internet or clients thereon, average bandwidth per application instance, etc. In other words, it may be desirable to have application-level network performance guarantees.
However, to date, such guarantees have not been possible. Network performance guarantees have been provided at the network level. Routers have been used to provide Quality of Service (QoS) guarantees, but these guarantees have not been oriented for distributed applications as a whole. In other words, the typical means for assuring bandwidth or capacity levels have been directed to data networks per se, rather than applications. Moreover, in an environment in which a distributed application may be executing, issues such as sharing of resources between different applications makes it difficult to guarantee network resources along communication pathways through a distributed application.
Even in cases where network resource provisioning might have been provided at the application level, the techniques used to obtain or maintain network resource requirements have involved techniques such as transmission rate control, throttling, and other network-oriented traffic control mechanisms. Although distributed application elements are often hosted in virtual machines (VMs), VM technology has not been exploited to help guarantee application-level network requirements.
Techniques related to controlling network resources for distributed applications using virtual machine (VM) technology are discussed below.